package org.dromara.admin.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 订单状态: PENDING(待生效)，SIGNING(签约中), EFFECTING(生效中), CANCELLING(取消),TERMINATING(解约中), ENDED(已结束)
 */
@Getter
@AllArgsConstructor
public enum OrderStatus {

    /** 待生效 */
    PENDING("PENDING", "待生效"),

    /** 签约中 */
    SIGNING("SIGNING", "签约中"),

    /** 生效中（租赁中） */
    EFFECTING("EFFECTING", "生效中"),

    /** 取消中 */
    CANCELLING("CANCELLING", "取消"),


    /** 解约中 */
    TERMINATING("TERMINATING", "解约中"),

    /** 已结束 */
    ENDED("ENDED", "已结束");

    private final String code;
    private final String info;

    /**
     * 根据code代码获取枚举类型
     *
     * @param code 代码（如："PENDING"）
     * @return 对应的枚举类型
     * @throws IllegalArgumentException 如果找不到匹配的枚举类型
     */
    public static OrderStatus getByCode(String code) {
        for (OrderStatus type : values()) {
            if (type.getCode().equalsIgnoreCase(code)) {
                return type;
            }
        }
        throw new IllegalArgumentException("无效的类型代码: " + code);
    }

    /**
     * 根据info信息获取枚举类型
     *
     * @param info 类型信息（如："审核中"）
     * @return 对应的枚举类型
     * @throws IllegalArgumentException 如果找不到匹配的枚举类型
     */
    public static OrderStatus getByInfo(String info) {
        for (OrderStatus type : values()) {
            if (type.getInfo().equals(info)) {
                return type;
            }
        }
        throw new IllegalArgumentException("无效的类型: " + info);
    }
}
